package org.example.compare.dto;

import lombok.Data;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

@Data
public class ProcessSch {
    long id;//记录id，更新时需要	process_sch_id
    long miOrderProcessId;    //对应的订单工序id		order_process_id
    Set<Long> mPosCanDo = new HashSet<>();    //里面是工位，对应workers 字段里面用逗号分隔,这是排产核心输出给别的模块看的数据，每次更新数据时重新算一遍
    int miBoundMain;//绑主工位，0表示还没有, 订单工序完成或重配解除
    int miBoundHelpMain;//绑帮主工位，0表示还没有，订单工序完成或重配解除
    Set<Long> misHaveDonePos = new HashSet<>();//当前工序做过的工位，库空不清除，需要用到历史值
    Set<Long> misWorkingPos = new HashSet<>();//正在做的工位，不需要用到历史值,给监控界面查看
    CBoxSet mBoxesInLib = new CBoxSet();//在库的筐集合
    CBoxSet mBoxesInWork = new CBoxSet();//生产状态的筐集合

    long mPlanHourTarget = -1;//计划小时任务数，启动订单是赋值
    long mNowHourTarget = 1;//当前小时任务数，，在数据库里用于显示
    Long mSuggestID;//建议记录的id，需要人工处理时生成，0表示没有建议
    int mIncDecFlag;//加减人标记，1加人0减人-1，0不变
    Date mPosChangeStart = new Date(0);//开始进行加人计划的时间，在这个时间30分钟内按照建议的工位进行加人，在这个时间后自由抢做
    Set<Long> mPlanPositions = new HashSet<>();
    //加人或减人计划的工位，如果没有，则下次再进行判断，判断的依据是技能、对方当前工序、对方当前工序的剩余时间
    boolean mbNGFlag;//工序是否需要参与排产的标志，在库量达到的或加急的或刚刚回库的强制标记为需要排产
    boolean mbUrgentFlag;//加急工序标志，可整单加急也可单工序加急
    String mbUrgentCode; // 加急工序等级 分数从系统配置获取
    Boolean mbValidFlag;//记录有效性的标志，完成的订单工序设置为false
    boolean mbHoldFlag;//暂停标志，需要从数据库同步
    String mRemark;//备注用于显示
    Date createTime;
    Set<Long> misWhiteList = new HashSet<>();//工位白名单，优先发送
    Set<Long> misBlackList = new HashSet<>();//工位黑名单，不允许发送
    boolean mbAllUnDoInLib;
    boolean mbAllUnDoNotReady;
}
